/**
 * @Author 赖治宇
 * @CreatedAt 2021/04/08 11:26
 * @UpdatedAt 2021/04/08 11:26
 * @Deascription 接口模拟
 */
// 这里是模块化封装的写法，关于模块化封装，有好几套标准，这里采用的是CommonJS规范，即是使用 module.exports = {} 导出对象这种写法；还有一种比较常用的，就是在编写vue或者react的时候使用的 export default {} 这种写法，这是ES6的写法，在这里不做过多的介绍，有兴趣的可以去了解一下，详细数据我给你放到了readme.md文件中，也可以问问AI。
module.exports = {
    /** 简单加法 */
    add(a, b, callback) {
        // 用于模拟异步编程
        setTimeout(() => {
            console.log('callback')
            callback(a, b);
        }, 1000)
    },
    /** 查询用户列表信息 */
    fetchUserList() {
        return new Promise((resolve, reject) => {
            const data = [
                {
                    user_id: 1,
                    user_name: 'Kevin',
                    use_age: 18
                },
                {
                    user_id: 2,
                    user_name: 'John',
                    use_age: 18
                },
            ]
            setTimeout(() => {
                resolve(data)
            }, 3000)
        })
    },
    /** 用户登录 */
    userLogin(user) {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                if (user.user_name === 'Kevin') {
                    resolve('登录成功')
                } else {
                    reject('用户名错误')
                }
            }, 1000)
        })
    },
    /** 获取地址 */
    getAddress() {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve('北京市海淀区')
            }, 1000)
        })
    },
    /** 获取天气 */
    getWeather() {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve('晴天')
            }, 2000)
        })
    },
    /** 获取轮播图 */
    getBanner() {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve([
                    {
                        img_url: 'https://wallpapercave.com/wp/wp6218324.jpg',
                        title: '大牌手机'
                    },
                    {
                        img_url: 'https://wallpapercave.com/wp/wp6218324.jpg',
                        title: '大牌手机'
                    },
                    {
                        img_url: 'https://wallpapercave.com/wp/wp6218324.jpg',
                        title: '大牌手机'
                    },
                ])
            }, 3000)
        })
    },
    /** 获取商品列表 */
    getGoods() {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                reject(new Error('获取商品信息失败'))
                // resolve([
                //     {
                //         img_url:'https://wallpapercave.com/wp/wp6218324.jpg',
                //         title: '大牌手机'
                //     },
                //     {
                //         img_url:'https://wallpapercave.com/wp/wp6218324.jpg',
                //         title: '大牌手机'
                //     },
                //     {
                //         img_url:'https://wallpapercave.com/wp/wp6218324.jpg',
                //         title: '大牌手机'
                //     },
                // ])
            }, 500)
        })
    },
    /** 初始化首页数据 */
    initHomeData() {
        const promiseArr = [this.getAddress(), this.getWeather(), this.getBanner(), this.getGoods()]
        // return Promise.all(promiseArr)
        // return Promise.race(promiseArr)
        // return Promise.any(promiseArr)
        return Promise.allSettled(promiseArr)
    },
    /**
     *  获取生成器数据
     *  @param { number } data
     *  @return { Promise } 返回数据
     * */
    fetchGeneratorData(data) {
        return new Promise((resolve, reject) => {
            setTimeout(() => {
                resolve(data)
            }, 1000)
        })
    }
}